package com.company.collectionsFramework;


import com.company.generic.Hero;

import java.util.ArrayList;
import java.util.List;

/**
 * 如果要存放多个对象， 可以使用数组，但是数组有局限性
 * 比如 声明长度是10的数组
 * 不用的数组就浪费了
 * 超过10的个数，又放不下
 *
 * **/
public class TestCollections {
//    public static void main(String[] args) {
//        //数组的局限性
//        Hero heros[] = new Hero[10];
//        //声明长度是10的数组
//        //不用的数组就会被浪费了
//        //超过10的个数，又放不下
//        heros[0] = new Hero("盖伦");
//        //放不下会报错
//        heros[1] = new Hero("提莫");
//    }
    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        /**为了解决数组的局限性 ，引入容器类的概念，最常见的容器就是ArrayList
         * 容器的容量"capacity"会随着对象的增加，自动增长
         * 只需要不断的往容器里面增加英雄即可，不用担心或出现数组的边界问题
         *
         * **/
        //容器类ArrayList用于存放对象
//        ArrayList heros = new ArrayList();
//        heros.add(new Hero("盖伦"));
//        System.out.println(heros.size());

        /**容器的容量"capacity"会试着对象的增加，自动增长**/
        //只需要不断的往容器里里面增加新英雄即可，不用担心出现数组的边界问题
//        heros.add(new Hero("提莫"));
//        System.out.println(heros.size());
        /**
         * ArrayList的常用方法
         * add  增加
         * contains 判断是否存在
         * get 获取指定位置的对象
         * indexOf 获取对象所处的位置
         * remove 删除
         * set 替换
         * size 获取大小
         * toArray 转换为数组
         * addAll 把另一个容器所有对象都加进来
         * clear 清空
         *
         * **/
        //ArrayList实现了接口List
        //常见的写法会把引用声明为接口List类型
        //注意： 是java.util.List，  而不是java.awt.List
        //接口引用指向锡类对象(多态)

        List heros = new ArrayList<>();
        heros.add(new Hero("盖伦"));
        System.out.println(heros.size());



    }
}
